/**
主要回顾：final 关键字

final 关键字是修饰符
    1.final 关键字修饰一个基本类型的变量时，该变量不能被重新赋值
    2.final 关键字修饰一个引用类型变量时，该变量不能重新指向新的对象
    3.final 关键字修饰一个函数时，该函数不能被重写
    4.final 关键字修饰一个类时，该类不能被继承（当然也就不能被重写了）

final 可以用于定义常量：
    一般形式：
        public static final 类型 常量 = 值;
*/

class Circle{
    //半径
    double r ;
    
    //使用 public static final 定义圆周率 PI
    public static final double PI = 3.14159265;
    
    public Circle(double r){
        this.r = r;
    }
    
    //使用 final 修饰符后，该方法不能被重写（防止被别人修改）
    final public void getArel(){
        System.out.println("Area is: " + PI*r*r);
    }
}


class LearnFinal {
    public static void main(String[] args) {
        final Circle c = new Circle(2.0);
        c.getArel();
        
        //报错：无法为最终变量分配值（final 修饰一个引用类型变量时，该变量不能重新指向新的对象）
//        c = new Circle(3.0);    
//        c.getArel();
    }
}